package threadTest.example;

import createModel.prototypeModel.User;

import java.util.ArrayList;
import java.util.List;

/**
 * 功能描述:用户contatiner
 * 2024/08/29
 *
 * @author ZhangYi
 */
public class UserContatiner {

	/**
	 * 用户列表数据,要处理的数据
	 */
	private List<List<User>> userList;

	/**
	 *  容器中可以容纳的最大的数量
	 */
	private int maxSize = 3;

	/**
	 * 当前 容器中的数量
	 */
	private int currentSize =0;

	public UserContatiner() {
	}

	public UserContatiner(int maxSize) {
		this.maxSize = maxSize;
		this.userList = new ArrayList<>();
	}


	public synchronized void producer(List<User> users) throws InterruptedException {
		while (userList.size() > maxSize){
			this.wait();
		}
		System.out.println(String.format("%s 批量插入数据", Thread.currentThread().getName()));
		userList.add(users);
		// 通知另一个线程,可以运行了
		this.notify();
	}

	public synchronized void consumer() throws InterruptedException {
		while (userList.isEmpty()){
			this.wait();
		}
		// 指定批量提交保存数据
		System.out.println(String.format("%s 批量保存数据", Thread.currentThread().getName()));
		System.out.println(String.format("保存的数据为%s", userList.get(userList.size()-1)));
		userList.remove(userList.size()-1);
		// 通知另一个线程,可以运行了
		this.notify();
	}
}
